package com.fast.alden.portal.service;

import com.fast.alden.data.model.PortalUser;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

public interface PortalUserPortalService {
    /**
     * 根据ID查询前台用户，查询失败抛出异常
     *
     * @param id
     * @return
     */
    PortalUser retrieveWithException(Long id);

    /**
     * 修改最后登录信息
     *
     * @param entity
     */
    void updateLoginInfo(PortalUser entity);

    /**
     * 根据username、email、phone查找用户
     *
     * @param account 账户
     * @return
     */
    PortalUser findByAccount(String account);

    /**
     * 创建前台用户
     *
     * @param user
     */
    PortalUser create(PortalUser user);

    /**
     * 修改前台用户，不支持修改ID、密码、头像、用户类型、最后登录信息
     *
     * @param user
     */
    PortalUser update(PortalUser user);

    /**
     * 用户名是否存在
     *
     * @param username
     * @return
     */
    boolean existUsername(String username);

    /**
     * 手机号是否存在
     *
     * @param phone
     * @return
     */
    boolean existPhone(String phone);

    /**
     * 邮箱是否存在
     *
     * @param email
     * @return
     */
    boolean existEmail(String email);

    /**
     * 修改密码
     *
     * @param userId
     * @param newPwd
     */
    void updatePassword(Long userId, String newPwd);

    /**
     * 修改指定用户头像
     *
     * @param userId 用户ID
     * @param file   头像文件
     * @throws IOException
     */
    void updateAvatar(Long userId, MultipartFile file) throws IOException;

    /**
     * 删除指定用户头像
     *
     * @param userId 用户ID
     */
    void removeAvatar(Long userId);
}
